#include <iostream>
#include <list>

using namespace std;

class Test
{
public:
   /*
		重载圆括号
	      1.返回值一定是bool--》为啥
		         remove_if源码中有判断条件，为true会被删除，为false不删除
		  2.形参的类型必须跟容器中存放的数据类型一致，可以定义成普通变量，也可以定义成引用
	*/
    bool operator()(int val)
    {
        if (val < 100)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};

int main()
{
    list<int> list1 = {12, 12, 12, 56, 96, 12, 968, 12, 745, 12};
    // 带条件的删除--》 请你把list1中的所有小于100的数删除
    // 思路1.自己写代码实现，for遍历list1，if判断，remove删除

    /*
    思路2.list容器本身提供了remove_if函数，专门负责实现带条件的删除

        list1.remove_if(函数对象)
    */

    Test t; // t 为函数对象
    list1.remove_if(t);
    // list1.remove_if(Test());

    for (list<int>::iterator it = list1.begin(); it != list1.end(); it++)
    {
        cout << *it << " ";
    }
}
